package com.bestcem.xm.common.core.grpcplatform.dao.mapper;

import com.bestcem.xm.common.core.grpcplatform.entity.GrpcPlatformEntity;
import com.bestcem.xm.common.core.grpcplatform.entity.ListGrpcPlatformsQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * grpc加签验签mapper
 *
 * @author jie.yao <jie.yao@idiaoyan.com>
 * @version v1.0
 * @date 2021/10/12 10:52
 */
@Mapper
public interface GrpcPlatformMapper {

    /**
     * 插入单条记录
     *
     * @param grpcPlatformEntity entity
     * @return 插入成功条数
     */
    Integer insert(GrpcPlatformEntity grpcPlatformEntity);

    /**
     * 根据主键id获取entity
     *
     * @param id 主键id
     * @return entity
     */
    GrpcPlatformEntity getById(@Param("grpcId") String id);

    /**
     * entity更新
     *
     * @param grpcPlatformEntity entity
     * @return 更新成功条数
     */
    long updateByEntity(GrpcPlatformEntity grpcPlatformEntity);

    /**
     * 根据code获取entity
     *
     * @param code 代码
     * @return entity
     */
    GrpcPlatformEntity getByCode(@Param("code") String code);

    /**
     * 根据code查询列表 (精确匹配)
     *
     * @param query 查询条件
     * @return 列表
     */
    List<GrpcPlatformEntity> listByCode(ListGrpcPlatformsQuery query);

    /**
     * 根据code查询列表 (模糊匹配)
     *
     * @param query 查询条件
     * @return 列表
     */
    List<GrpcPlatformEntity> listLikeCode(ListGrpcPlatformsQuery query);

    /**
     * 根据code查询匹配数量 (精确匹配)
     *
     * @param code 代码
     * @return 匹配数量
     */
    Long countByCode(@Param("code") String code);

    /**
     * 根据code查询匹配数量 (模糊匹配)
     *
     * @param code 代码
     * @return 匹配数量
     */
    Long countLikeCode(@Param("code") String code);

    /**
     * 根据主键id删除记录
     *
     * @param id 主键id
     * @return 删除成功条数
     */
    long deleteById(@Param("grpcId") String id);
}
